/**
  ES5给Object扩展了好一些静态方法, 常用的2个:
  1. Object.create(prototype, [descriptors])
    * 作用: 以指定对象为原型创建新的对象
    * 为新的对象指定新的属性, 并对属性进行描述
      value : 指定值
      writable : 标识当前属性值是否是可修改的, 默认为false
      configurable: 标识当前属性是否可以被删除 默认为false
      enumerable： 标识当前属性是否能用for in 枚举 默认为false

  2. Object.defineProperties(object, descriptors)
    * 作用: 为指定对象定义扩展多个属性
    * get ：用来获取当前属性值的回调函数
    * set ：修改当前属性值触发的回调函数，并且实参即为修改后的值
    * 存取器属性：setter,getter一个用来存值，一个用来取值
 */

// Object.defineProperties(object, descriptors)
var obj = {firstname:'limi', lastname: 'pan'}
Object.defineProperties(obj, {
  fullname: {
    get: function() {
      return this.firstname + '·' + this.lastname
    },
    set: function(value) {
      var names = value.split('·')
      this.firstname = names[0]
      this.lastname = names[1]
    }
  }
})

console.log(obj.fullname)

obj.firstname = 'hamey'
obj.lastname = 'pan'
console.log(obj.fullname)

obj.fullname = 'LeBron·James'
console.log(obj.fullname)
console.log(obj.firstname)
console.log(obj.lastname)